package tree;

/**
 * 题目：判断是不是二叉树的子结构
 * @Author Gavin
 * @date 2022.08.06 21:34
 */
public class tree_21 {
    //递归判断
    public boolean solution(TreeNode node1,TreeNode node2){
        if(node1==null&&node2==null)return true;
        if(node1==null||node2==null)return false;
        return isSub(node1,node2)||solution(node1.left,node2)||solution(node1.right,node2);
    }
    //递归判断两个序列是不是相同的序列
    public boolean isSub(TreeNode root1, TreeNode root2) {
        //这里不确定题目的子结构是否必须是叶子节点要相同（这里的处理只要root2能够遍历完就算子结构而不管root1是否遍历到了叶子节点）
        if (root2 == null) {
            return true;
        }
        if (root1 == null) {
            return false;
        }
        if (root1.val == root2.val) {
            return isSub(root1.left, root2.left) && isSub(root1.right, root2.right);
        }
        return false;
    }
}
